&引用;awk“;及;削减;在bash脚本中表现不同
我试图从单引号开始剪切以下字符串:&引用;awk“;及;削减;在bash脚本中表现不同,bash,shell,awk,Bash,Shell,Awk,我试图从单引号开始剪切以下字符串: name1=O'Reilly 因此它留下: name2=Reilly 通过以下命令,可以很容易地从命令行执行此操作: echo $name | cut -d\' -f echo $name | awk -F\' '{print $2}' 但是,当我从脚本运行这些命令时,字符串保持不变。我一直在研究使用单引号作为分隔符的问题,但找不到任何东西。有没有办法解决这个问题?如果不改变变量扩展到的字符串,它只输出字符串操作的结果 如果要为变量name创建新的引用,
name1=O'Reilly
因此它留下:
name2=Reilly
通过以下命令,可以很容易地从命令行执行此操作:
echo $name | cut -d\' -f
echo $name | awk -F\' '{print $2}'
但是,当我从脚本运行这些命令时,字符串保持不变。我一直在研究使用单引号作为分隔符的问题,但找不到任何东西。有没有办法解决这个问题?如果不改变变量扩展到的字符串,它只输出字符串操作的结果 如果要为变量
name
创建新的引用,请使用命令替换将cut
/awk
操作的结果保存为变量name
:
% name="O'Reilly"
% echo "$name" | awk -F\' '{print $2}'
Reilly
% name=$(echo "$name" | awk -F\' '{print $2}')
% echo "$name"
Reilly
另一方面,如果要将输入声明为一(name1
),并将输出另存为一个变量(name2
):
使用参数展开可能更容易实现这一点,不过:
$ name="O'Reilly"
$ echo "${name#*\'}"
Reilly
$ name="${name#*\'}"
$ echo "$name"
Reilly
这不会改变变量扩展到的字符串,它只输出字符串操作的结果 如果要为变量
name
创建新的引用,请使用命令替换将cut
/awk
操作的结果保存为变量name
:
% name="O'Reilly"
% echo "$name" | awk -F\' '{print $2}'
Reilly
% name=$(echo "$name" | awk -F\' '{print $2}')
% echo "$name"
Reilly
另一方面,如果要将输入声明为一(name1
),并将输出另存为一个变量(name2
):
使用参数展开可能更容易实现这一点,不过:
$ name="O'Reilly"
$ echo "${name#*\'}"
Reilly
$ name="${name#*\'}"
$ echo "$name"
Reilly
你看到了什么错误?名称、名称1或名称2?$name!=$对不起,我的解释引起了混乱。我对命令本身没有任何问题,当我在命令行中运行它们时,我得到了所需的结果,这些也是指令:name=O'Reilly echo name | cut-d\'-f echo$name | awk-f\'{print$2}在这两种情况下,输出都是“Reilly”,这就是我需要的。问题是,当我从bash脚本运行它时,输出是O'Reilly。我做错什么了吗?你看到什么错误了?名称、名称1或名称2?$name!=$对不起,我的解释引起了混乱。我对命令本身没有任何问题,当我在命令行中运行它们时,我得到了所需的结果,这些也是指令:name=O'Reilly echo name | cut-d\'-f echo$name | awk-f\'{print$2}在这两种情况下,输出都是“Reilly”,这就是我需要的。问题是,当我从bash脚本运行它时,输出是O'Reilly。我做错什么了吗?