Feb
1
不知道为什么这些年写脚本一直没有解决这个小需求:把命令行参数传递给脚本中的某个命令继续执行
例如我想写一个 colored-echo 命令:
然后这么调用
但参数的数量是可变的,另一种实现是
但个实现也很奇怪,如果某个参数里面出现了引号或者空格,会因为bash奇葩的转义逻辑导致跟预期不一致。
可能因为痛感不强烈,所以拖了几年也没真正花心思去解决它,今天搜了一会,总算找到靠谱的解决方案了,而且超级简单:
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
例如我想写一个 colored-echo 命令:
引用
#!/bin/bash
color=$1
shift
echo -ne "\x1b[$color"
echo -n $1 $2 $3 $4 $5
echo -e "\x1b[0m"
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; i<=$#; i++))
do
cmd="cmd ${@:i:1}"
done
$cmd
for ((i=1; i<=$#; i++))
do
cmd="cmd ${@:i:1}"
done
$cmd
但个实现也很奇怪,如果某个参数里面出现了引号或者空格,会因为bash奇葩的转义逻辑导致跟预期不一致。
可能因为痛感不强烈,所以拖了几年也没真正花心思去解决它,今天搜了一会,总算找到靠谱的解决方案了,而且超级简单:
引用
echo "$@"
欢迎扫码关注:
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
snoopy
2018-2-1 16:46
不给力啊,这个是 Linux 基本命令,居然现在才发现
分页: 1/1 1