紧急修复一个问题,需要改shell script, 简单描述如下:
#! /bin/bash
x="hello"
if [ "${x}" == "hello" ]; then
echo "yes"
fi
在ubuntu下执行./a.sh是OK的, 但执行sh a.sh有问题(mac下没有问题),真是怪事。由于紧急,我把==改为=,就可以了。
事后看了下问题究竟在哪里, 原来ubuntu的sh是连接dash的,而dash和bash不兼容。
怎么处理呢?
1. ==换为=, 不会改变语义,=不是赋值,而是比较
2. 用bash a.sh执行
3. 其他方法
我倾向于方法1, 不多说。
坑爹
Your sister的。