使用 && { 的基本 Shell 编程问题

使用 && { 的基本 Shell 编程问题

嗨,我只是想知道下面这个例子中&&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(转到该目录),如果执行成功,我们将转到下一个语句块

相关内容