Bash 笔记

Table of Contents


基本

小提示

  • 使用变量时, 一定要用引号. 如: echo "$var"
  • 声明函数时, 无需使用关键字 function
  • 执行命令时, 用 $() 代替 ` `. 如: var="$(command "$(command)")"

代码片段

下面保存一些常用的代码, 提高开发效率;)

最小代码模板

#!/usr/bin/env bash

main() {
  ...
}

main "$@"

获取脚本的目录信息

# 脚本真实链接
script_link="$(readlink -f "$0")"
printf '%s\n' "$script_link"

# 脚本所在目录
script_dir="$(dirname "$(readlink -f "$0")")"
printf '%s\n' "$script_dir"

# 脚本文件名
script_file="$(basename "$(readlink -f "$0")")"
printf '%s\n' "$script_file"

从命令声明数组

read -d "" -ra a1 <<< "$(seq 1 2)"
echo "${a1[@]}"
# output:
# 1 2

a2=("$(seq 1 5)")
echo "${a2[@]}"
# output:
# 1
# 2

遍历文件的行

while read -r line; do
  printf '%s\n' "$line"
done < "file"

遍历文件和目录

for file in *; do
  printf '%s\n' "$file"
done

输出带颜色的文字

# 输出所有颜色(from: http://jafrog.com/2013/11/23/colors-in-terminal.html)
for code in {0..255}; do
  echo -e "\e[38;5;${code}m"'\\e[38;5;'"$code"m"\e[0m"
done

# 随机一个颜色
echo -e "\e[38;5;$((RANDOM%256))m#######\e[0m"

切换用户执行

su <other_user> << !
  ...
  exit
!

Author: Saul Lawliet

Created: 2019-03-21 Thu 16:49

Validate