在Ubuntu 16.04上,我有一个以root身份运行的bash脚本。我想从用户的输入中删除所有空格,并将修剪后的字符串分配给变量。
read -p "Enter username: " USERNAME
echo "$USERNAME" | sed s/' '/''/g
TRIM="$USERNAME" | sed s/' '/''/g
echo $TRIM
echo "Done"
以下是一些示例输入和输出:
输入用户名:h j k l
hjkl完成
$ TRIM是空的。
为了获得$ TRIM来包含结果,我需要做出哪些改变?
答案 0 :(得分:4)
使用$()
捕获命令的输出。
trim=$(echo "$USERNAME" | sed 's/ //g')
但是,您不需要为此命令,您可以使用bash
parameter expansion operator进行替换。
trim=${username// /}
P.S。不要使用大写变量名,它们通常是为环境变量保留的。
答案 1 :(得分:1)
您应该在脚本中注意几件事。
首先,像USERNAME
这样的大写标识符通常是为环境变量保留的。因此,您可能会意外地覆盖shell变量,从而导致意外的影响。 TRIM
的情况也是如此。
其次,您应该使用内置的SHELL
检查Ubuntu发行版中的默认shell。做点什么
echo $SHELL
如果输出为dash
或bash
,您可以使用命令替换来实现目标。
trim=$(echo "$username" | sed 's/ //g')
请注意sed
命令本身应该放在单引号下。
当您回显trim
时,请使用双引号来阻止分词,如
echo "$trim" # In your case though the double quotes doesn't make any difference