天天看点

Shell内建命令之cd、continue、eval、exec

cd

cd [-L|[-P [-e]] [[email protected]] [directory],将当前工作目录更改为directory指定的目录,如果没有指定directory,则会更改为$HOME指定的目录。如果$CDPATH存在,则会作为搜索路径,在$CDPATH指定的目录下搜索directory。如果directory是以斜杠“/”开头的绝对目录,则不使用$CDPATH。$CDPATH中的多个路径用“:”分隔。-P选项表示不跟随符号链接,在处理directory中的“..”之前和遍历directory之前符号链接会被解析。使用-P选项时,还可以选择性的使用-e选项,在成功更改目录后,无法成功确定当前工作目录,将返回一个不成功的状态。-L选项表示在处理directory中的“..”之后再解析符号链接(默认选项)。directory中“..”的处理方式是删除路径名中的前一个组成部分。[email protected]选项在支持此选项的系统上,将与文件相关的扩展属性表示为目录。如果directory是“-”,会将目录切换为$OLDPWD指定的目录,即前一个工作目录。如果第一个参数是“-”或者$CDPATH不为空,在成功切换目录后,新工作目录的绝对路径名被打印出来。

如下为/home/common下的目录。

Shell内建命令之cd、continue、eval、exec

 在其子目录Music下执行如下命令:

Shell内建命令之cd、continue、eval、exec

continue

continue [n],用于for、while、until、select跳过本轮循环,执行下一轮循环。如果指定了n则表示从第n层开始开始继续循环(从内向外数)。n必须是大于1的数,否则返回非0状态。

for i in 1 2 3;do
    for j in 4 5 6;do
        for k in 7 8 9;do
          if [ $k -eq 8 ];then
            continue 2
          else
            echo "$i--$j--$k"
          fi
        done
    done
done
           

运行结果为:

1--4--7
1--5--7
1--6--7
2--4--7
2--5--7
2--6--7
3--4--7
3--5--7
3--6--7
           

eval

eval [arguments],arguments中的参数整体做为一个命令来读取和执行,命令的返回状态就是eval的返回状态,如果arguments为空则返回状态0。

Shell内建命令之cd、continue、eval、exec

 exec

exec [-cl] [-a name] [command [arguments]],如果指定了command,在不创建新进程的情况下替换shell。-l选项,shell将在传递给command 的第0个参数的开头加上“-”。-c选项,在空环境下执行command。-选项,将name作为0个参数传递给command。

exec ls 
           

继续阅读