shell中判断路径是否存在
if [ -d "$LINK_OR_DIR" ]; then
if [ -L "$LINK_OR_DIR" ]; then
# It is a symlink!
# Symbolic link specific commands go here.
rm "$LINK_OR_DIR"
else
# It's a directory!
# Directory command goes here.
rmdir "$LINK_OR_DIR"
fi
fi
shell中拼接字符串
#第一种
foo="Hello"
foo="${foo} World"
echo "${foo}"
> Hello World
#第二种
a='Hello'
b='World'
c="${a} ${b}"
echo "${c}"
> Hello World
shell中判断字符串中是否包含某字符串
string='My long string'
if [[ $string == *"My long"* ]]; then
echo "It's there!"
fi
scp命令拷贝远端数据到本地
#-r表示递归复制整个目录
#foo后不加/,类似于windows中的把foo整个目录拷贝
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
#foo后加/,只把foo中的内容拷贝
scp -r user@your.server.example.com:/path/to/foo/ /home/user/Desktop/
shell中2>&1
的意思
1等同于stdout
2等同于stderr
所以2>&1
等同于stderr to stdout(把标准错误输出到标准输出)
因为>
是重定向符号,其后的可以是文件名,为了防止误会,所以命令中添加了&
符号。&
符号就是告诉计算机,1和2就是标志stdout
和stderr
的意思,而不是其他的意思
shell中分割字符串
#!/bin/bash
IN="bla@some.com;john@home.com"
#IFS是关键字,表示分隔符
IFS=';' read -ra ADDR <<< "$IN" #把IN的内容提取出来赋值给数组ADDR
for i in "${ADDR[@]}"; do #循环数组ADDR ;@符号,表示所有的意思
echo "$i"
done