加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:09:11 所属栏目:安全 来源:网络整理
导读:我正在尝试执行以下任务: 写一个名为changedir的 shell脚本 获取目录名称,命令名称和(可选)一些其他参数. 然后该脚本将更改为指示的目录,并且 执行用提供的参数指示的命令. 这是一个例子: $sh changedir /etc ls -al 这应该更改到/ etc目录并运行命令ls -a
我正在尝试执行以下任务:
写一个名为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 && "$@"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读