0
0

Bash:传递命令行参数

Felix021 发表于 2018年02月01日 14:18 | Hits: 949
Tag: shell

不知道为什么这些年写脚本一直没有解决这个小需求:把命令行参数传递给脚本中的某个命令继续执行

例如我想写一个 colored-echo 命令:

引用
#!/bin/bash

color=$1
shift

echo -ne "\x1b[$color"

echo -n $1 $2 $3 $4 $5

echo -e "\x1b[0m"


然后这么调用
引用
colored-echo 41m hello world


但参数的数量是可变的,另一种实现是
引用
cmd=echo

for ((i=1; ido
  cmd="cmd ${@:i:1}"
done

$cmd


但个实现也很奇怪,如果某个参数里面出现了引号或者空格,会因为bash奇葩的转义逻辑导致跟预期不一致。

可能因为痛感不强烈,所以拖了几年也没真正花心思去解决它,今天搜了一会,总算找到靠谱的解决方案了,而且超级简单:
引用
echo "$@"

原文链接: https://www.felix021.com/blog/read.php?2180

0     0

评价列表(0)