我正在尝试执行以下任务:
写一个名为changedir的 shell脚本
获取目录名称,命令名称和(可选)一些其他参数.
然后该脚本将更改为指示的目录,并且
执行用提供的参数指示的命令.
写一个名为changedir的 shell脚本
获取目录名称,命令名称和(可选)一些其他参数.
然后该脚本将更改为指示的目录,并且
执行用提供的参数指示的命令.
这是一个例子:
$sh changedir /etc ls -al
这应该更改到/ etc目录并运行命令ls -al.
到目前为止我有:
#!/bin/sh directory=$1; shift command=$1; shift args=$1; shift cd $directory $command
如果我像sh changeir / etc那样运行上面的ls它会更改并列出目录.但是,如果我向ls添加参数,它就不起作用.我需要做些什么来纠正它?
你似乎忽略了命令的其余参数.
如果我理解正确你需要做这样的事情:
#!/bin/sh cd "$1" # change to directory specified by arg 1 shift # drop arg 1 cmd="$1" # grab command from next argument shift # drop next argument "$cmd" "$@" # expand remaining arguments,retaining original word separations
更简单,更安全的变体是:
#!/bin/sh cd "$1" && shift && "$@"