这个bash语法是什么意思? (特点:案例,执行)

时间:2010-01-12 06:55:02

标签: linux bash

这个bash脚本的目的是什么? (它是较大脚本的一部分。)

if [ $# -gt 0 ]
then
  case $1 in
  -*) ;;
  *) exec $* ;;
esac
fi

相关问题:

https://stackoverflow.com/questions/2046762/problem-with-metamap-inappropriate-ioctl-for-device

5 个答案:

答案 0 :(得分:7)

英文,逐行:

if the number of arguments is greater than 0
then
if the first argument...
  starts with '-', do nothing
  else, "exec" the arguments (run the entire set of arguments as a command replacing this process, not as a child process)
(end of case)
(end of if)

答案 1 :(得分:1)

不知道任何bash脚本我会说这个

  • 查找参数数量是否大于0
  • 如果是,则查看第一个参数
    • 如果它以-开头,则无效
    • 否则它将所有参数作为单个命令行执行

答案 2 :(得分:1)

case ... esac部分是switch声明。如果$1-*匹配(即如果它以-开头),则会执行第一个案例 - 并且不执行任何操作。否则(如果$1*匹配,这取决于shell设置可能会排除以.开头的内容{}}} {/ p>}。

在那周围有一个if语句,确保只有在实际存在任何要检查的参数时才执行开关(参数计数大于零)。

答案 3 :(得分:0)

传入第一个参数并使用其余参数I.E。执行它:

./script.sh ls dir1 dir2

就好像你输入了

一样
ls dir1 dir2

答案 4 :(得分:0)

如果此脚本在命令行中放置的第一个参数是文件而不是选项,则尝试将其作为可执行文件或脚本运行。