请教各位老师1个shell 问题
定义了1个函数ab,这个函数的目的是接收1个参数去执行tiup cluster exec 命令,,但是执行命令里面的awk ‘{print $1}’ 会把$1 看作函数的参数,这个不是预期行为,有什么方法规避嘛
ab(){
name=“$1”
echo $name
ck=tiup cluster exec $name --command "hostname -I|awk '{print $1}'"
}
ab “test”
ab(){
name=“$1”
echo “$name”
ck=$(tiup cluster exec “$name” --command “hostname -I | awk ‘{print $1}’”)
echo “$ck”
}
ab “test”
1 个赞
ab(){
name=“$1”
echo “$name”
ck=“tiup cluster exec $name --command "hostname -I|awk ‘{print $1}’"”
}
ab “test”
1 个赞
这种是不行的
这种也不行
亲测OK
#!/bin/bash
ab(){
name=$1
echo $name
ck=`tiup cluster exec $name --command 'hostname -I|awk "{print $1}"'`
echo $ck
}
ab test
注意看细节哈。
里面用双引号才能保证$1不会被转换
1 个赞
可以的,多谢咖啡哥
咖啡哥大佬