![使用 && { 的基本 Shell 编程问题](https://linux22.com/image/1124872/%E4%BD%BF%E7%94%A8%20%26%26%20%7B%20%E7%9A%84%E5%9F%BA%E6%9C%AC%20Shell%20%E7%BC%96%E7%A8%8B%E9%97%AE%E9%A2%98.png)
嗨,我只是想知道下面这个例子中&&
and的用法,这是否意味着如果你使用and 后跟,你就可以编写一个 shell 脚本而不必事先创建一个脚本?提前谢谢{ }
&&
{
$ mkdir -p lpi103-7 && cd lpi103-7 && {
> echo -e "1 apple\n2 pear\n3 banana" > text1
> echo -e "9\tplum\n3\tbanana\n10\tapple" > text2
> echo "This is a sentence. " !#:* !#:1->text3
echo "This is a sentence. " "This is a sentence. " "This is a sentence. ">text3
> split -l 2 text1
> split -b 17 text2 y;
> cp text1 text1.bkp
> mkdir -p backup
> cp text1 backup/text1.bkp.2
> }
答案1
该&&
符号是 AND 的布尔运算符,这意味着它使用前一个命令的结果,并且仅当第一个命令的退出代码为 0 时才执行下一个命令。
因此,这是以下的简写:
ls a &> /dev/null && echo "Done"
它基本上做同样的事情。
ls a &> /dev/null
if [ $? = 0 ]; then
echo "Done"
fi
用于{
分组运行命令,因此:
ls a &> /dev/null && {
echo "This will happen if"
echo "ls command returns 0"
}
是这个的简写:
ls a &> /dev/null
if [ $? = 0 ]; then
echo "This will happen if"
echo "ls command returns 0"
fi
您还可以使用 OR||
运算符执行相同操作,以便同时获得 if 的 else 部分。像这样
ls a &> /dev/null && echo "Done" || echo "No can do!"
并将其与命令分组结合起来:
ls a &> /dev/null && {
echo "This will happen if"
echo "ls command returns 0"
} || {
echo "This will happen if"
echo "ls command returns other than 0"
}
答案2
脚本是包含许多 unix 命令的文件,您可以创建包含命令的文件,也可以直接在终端中的 {} 中写入这些命令。
&& 用于执行前一个命令之后的另一个命令。
在你的例子中,
mkdir -p lpi103-7
创建名为 lpi103-7 的目录
和
cd lpi103-7
用于将当前目录更改为 lpi103-7
当你使用
&&
它执行建立目录命令后跟光盘命令
答案3
&&
运算符仅在左侧语句成功执行后才执行右侧语句。因此, mkdir -p lpi103-7
(创建 lpi103-7 目录)首先出现,如果执行成功,我们将转到cd lpi103-7
(转到该目录),如果执行成功,我们将转到下一个语句块