繁体   English   中英

Shell脚本:如何将脚本的命令行参数传递给它调用的命令?

[英]Shell Script :How to pass script's command-line arguments through to commands that it invokes?

到目前为止,“ ls ”工作正常,我将目录中的所有文件都保存了。 但是现在我想当我执行./myscript ls -l /somedir ,得到的结果与在终端上键入ls -l /somedir时得到的结果相同。

有什么办法吗? 到目前为止,这是我的代码。

#!/bin/sh
clear

echo ""
read  -p "type something :  " file
    echo""
    IFS=:
    for dir in $PATH ; do  

        if [ -x "$dir/$file" ]
        then

        echo ""
          exec "$dir/$file" 

        fi
        done

据我了解(这涉及大量的猜测工作,因为问题并未明确提出),您的问题是命令行参数未通过。

使用"$@"访问它们:

#!/bin/bash
prog=$1; shift
IFS=: read -r -a paths <<<"$PATH"
for path in "${paths[@]}"; do
  [[ -x $path/$prog ]] && "$path/$prog" "$@"
done

然后,运行yourscript ls -l /foo实际上会将-l/foo传递给它们创建的ls任何实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM