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

时间:2015-11-10 22:22:42

标签: linux bash shell scripting

到目前为止,“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

1 个答案:

答案 0 :(得分:2)

据我所知(由于问题没有明确提出,需要进行大量的猜测),您的问题是命令行参数不会通过。

使用"$@"访问它们:

#!/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个实例。