bash脚本用于更改目录并使用参数执行命令

前端之家收集整理的这篇文章主要介绍了bash脚本用于更改目录并使用参数执行命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试执行以下任务:
写一个名为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 && "$@"

猜你在找的Bash相关文章