使用Ubuntu12.04中的终端无法理解bash中的脚本
有人能告诉我在使用Ubuntu12.04中的终端无法理解bash中的脚本,bash,Bash,有人能告诉我在.sh文件中找到此脚本意味着什么吗: [ ! -n "$T_R" ] && echo "Message Appear" && exit 1; 链式的&&是一种常见的短路习惯用法 而不是写作 if true; then if true; then echo moo fi fi 您可以缩写为justtrue&&true&&echo-moo echo通常会成功,因此true&&echo moo&&exit 1将执行echo和exit如果
.sh
文件中找到此脚本意味着什么吗:
[ ! -n "$T_R" ] && echo "Message Appear" && exit 1;
链式的
&&
是一种常见的短路习惯用法
而不是写作
if true; then
if true; then
echo moo
fi
fi
您可以缩写为justtrue&&true&&echo-moo
echo
通常会成功,因此true&&echo moo&&exit 1
将执行echo
和exit
如果true
成功(显然它总是会成功)
(可能有一些极端的情况下,echo
可能会失败,但如果发生这种情况,无论如何你都会感到厌烦,所以我认为试图防范这些情况是没有意义的。)
[
是test
的别名,它是shell脚本的通用比较助手(在Bash中,它甚至是内置的)。test-n
检查字符串是否为非空
!
是通用的否定运算符,因此它将测试转换为检查空字符串
(这有点不自然,因为有一个单独的
test-z“$T_R”
,专门检查字符串是否为空。)链式&&
是一种常见的短路习惯用法
而不是写作
if true; then
if true; then
echo moo
fi
fi
您可以缩写为justtrue&&true&&echo-moo
echo
通常会成功,因此true&&echo moo&&exit 1
将执行echo
和exit
如果true
成功(显然它总是会成功)
(可能有一些极端的情况下,echo
可能会失败,但如果发生这种情况,无论如何你都会感到厌烦,所以我认为试图防范这些情况是没有意义的。)
[
是test
的别名,它是shell脚本的通用比较助手(在Bash中,它甚至是内置的)。test-n
检查字符串是否为非空
!
是通用的否定运算符,因此它将测试转换为检查空字符串
(这有点不自然,因为有一个单独的
test-z“$T_R”
,专门检查字符串是否为空。)链式&&
是一种常见的短路习惯用法
而不是写作
if true; then
if true; then
echo moo
fi
fi
您可以缩写为justtrue&&true&&echo-moo
echo
通常会成功,因此true&&echo moo&&exit 1
将执行echo
和exit
如果true
成功(显然它总是会成功)
(可能有一些极端的情况下,echo
可能会失败,但如果发生这种情况,无论如何你都会感到厌烦,所以我认为试图防范这些情况是没有意义的。)
[
是test
的别名,它是shell脚本的通用比较助手(在Bash中,它甚至是内置的)。test-n
检查字符串是否为非空
!
是通用的否定运算符,因此它将测试转换为检查空字符串
(这有点不自然,因为有一个单独的
test-z“$T_R”
,专门检查字符串是否为空。)链式&&
是一种常见的短路习惯用法
而不是写作
if true; then
if true; then
echo moo
fi
fi
您可以缩写为justtrue&&true&&echo-moo
echo
通常会成功,因此true&&echo moo&&exit 1
将执行echo
和exit
如果true
成功(显然它总是会成功)
(可能有一些极端的情况下,echo
可能会失败,但如果发生这种情况,无论如何你都会感到厌烦,所以我认为试图防范这些情况是没有意义的。)
[
是test
的别名,它是shell脚本的通用比较助手(在Bash中,它甚至是内置的)。test-n
检查字符串是否为非空
!
是通用的否定运算符,因此它将测试转换为检查空字符串
(这有点不自然,因为有一个单独的
测试-z“$T_R”
,专门检查字符串是否为空。)编辑:更正tripleee指出的错误信息
括号[]
是“test”的别名,用于测试是否满足某个条件。这并不是为了使问题复杂化,但请注意,这与bash shell关键字[[]]
是分离的(感谢tripleee的澄清!)。现在,大多数人似乎都使用后者,因为它具有更强大的功能集
在括号之间,脚本正在测试以确定变量“$T\R”
是否为空字符串
- 如果作为参数传递给它的字符串长度为非空,则
运算符返回true-n
反转案例(如果结果不正确,则测试成功) true)。因此在本例中,如果 字符串变量!
为**非零**(即如果 变量是空字符串或不存在)“$T\u R”
&&
运算符意味着仅在成功的情况下执行后续代码,因此只有在测试成功的情况下才会回显消息“message Display”(再次,如果“$T_R”
为空或未设置)
最后,&&exit 1
表示在成功回显消息后退出返回状态1
bash
和test
手册页对所有这些主题都非常有帮助,应查阅更多详细信息。编辑:纠正tripleee指出的错误信息
括号[]
是“test”的别名,用于测试