&引用;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。我做错什么了吗?