为什么bash扩展会逃避字符串?

时间:2016-10-23 20:34:11

标签: bash

#!/bin/bash
user=wxlfrank
group="wxlfrank : wxlfrank sudo"
pattern="$user :*sudo*"
if [[ $group != "${user} :*sudo*" ]] ; then
    usermod -aG sudo $user
    echo "add user $user" 'into group sudo'
fi

任何人都可以帮忙解释为什么第五行扩展到

[[ wxlfrank : wxlfrank sudo != \w\x\l\f\r\a\n\k\ \:\*\s\u\d\o\* ]]

1 个答案:

答案 0 :(得分:0)

摆脱引号:

if [[ $group != ${user}\ :*sudo* ]] ; then
带引号的

,模式被视为文字字符串。

请注意,[[bash内置版(与[test)不同),bash在内部处理任何扩展。因此,在扩展中不会进行单词拆分(以及在使用== / = / !=时除了路径名扩展)。