Bash Shell

通用

如何改变指定用户的登录shell

chsh <用户> -s <新shell>
chsh xiaohui -s /bin/sh

标准输出和错误输出同时重定向到同一位置

方法一:

2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )

方法二:

&> (如# ls /usr/share/doc &> out.txt )

条件判断

if [ 条件 ]
then
命令1
命令2
…..
else
if [ 条件 ]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi

比较两个数字

#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo "x is greater than y"
else
echo "y is greater than x"
fi

如何测试文件

Test         用法
-d 文件名    如果文件存在并且是目录,返回true
-e 文件名    如果文件存在,返回true
-f 文件名    如果文件存在并且是普通文件,返回true
-r 文件名    如果文件存在并可读,返回true
-s 文件名    如果文件存在并且不为空,返回true
-w 文件名    如果文件存在并可写,返回true
-x 文件名    如果文件存在并可执行,返回true

比如测试文件是否存在:

printf "正在复制 config/application.example.yml 到 config/application.yml ..."
if [ -e config/application.yml ]; then
  echo "已经存在,跳过复制"
else
  cp config/application{.example,}.yml
fi

Last updated