Shell 是否可以在变量中捕捉空格?
如标题所述?可能吗?我使用了以下代码,但它无法确定变量是否有空格。希望有人能帮助我Shell 是否可以在变量中捕捉空格?,shell,Shell,如标题所述?可能吗?我使用了以下代码,但它无法确定变量是否有空格。希望有人能帮助我 for file in `ls *.[Pp][Dd][Ff]` do var1=`echo "$file" | sed -e "s/.*-\(.*\)-.*/\1/"` var2="document.num=.*$var1" var3=`grep -l ${var2} *xml` case "$var3" in *\ *) echo $var3 >> haha ;; *)
for file in `ls *.[Pp][Dd][Ff]`
do
var1=`echo "$file" | sed -e "s/.*-\(.*\)-.*/\1/"`
var2="document.num=.*$var1"
var3=`grep -l ${var2} *xml`
case "$var3" in
*\ *)
echo $var3 >> haha
;;
*)
var4=`echo "$var3" | sed -e "s/-.*//"`
varName="$var4.$file"
echo ${var2}
echo $var3
mv $file $varName
;;
esac
为我工作:
var="ab"
#var="a b"
case "$var" in
*\ * ) echo "Has space" ;;
* ) echo "No space" ;;
esac
根据注释掉的变量,它打印有空格
或无空格
使用Bash正则表达式测试
如果您想灵活地定义空白,可以使用Bash的内置正则表达式测试。例如:
# Variable has a space.
foo=' '
[[ $foo =~ [[:space:]] ]]; echo $?
0
# Variable has a tab.
foo=$'\t'
[[ $foo =~ [[:space:]] ]]; echo $?
0
# Variable has no whitespace because it's empty.
foo=''
[[ $foo =~ [[:space:]] ]]; echo $?
1
这不是一个关于文件名的问题。@l0b0他遇到了问题,因为他正在尝试而不是使用文件全局。但这仍然是一个有趣的问题。@CodeGnome是的,我的答案是不解析
ls
,但是这个问题没有用。