请教各位老师1个shell 脚本的问题

请教各位老师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

注意看细节哈。
image

image

里面用双引号才能保证$1不会被转换

1 个赞

可以的,多谢咖啡哥

咖啡哥大佬 :+1: