我在bash
中有下一个字符串比较:
if [[ $1 == "/"* ]]; then echo YES; else echo "$1"; fi
如何在sh
中执行相同操作?
答案 0 :(得分:2)
您可以使用def _request_url(method, url):
session = requests.session()
adapter = TlsAdapter(ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1)
session.mount("https://", adapter)
return response = session.request(method, url)
语句执行此操作。
case
直接翻译将是case $1 in
/*) echo YES;;
*) echo $1
esac
,但它不会起作用,因为sh不支持那里的glob匹配。您需要调用if [ "$1" = "/*" ]
等外部命令。
grep
if printf '%s\n' "$1" | grep -e '^/' >/dev/null 2>&1; then
...
fi
这会更短,但如果您没有bash,那么您可能也没有grep -q
。
答案 1 :(得分:1)
2000-today
语句优雅地处理这个问题。
case
在case $1 in
'/'* ) echo YES;;
*) echo "$1";;
esac
之前缺少引用以及带有双分号和未成对的右括号的一般语法对新手来说是不和谐的,但是你很快就会习惯它。它非常多才多艺而且不受重视。
如果你坚持使用in
,你可以做一些像
[
使用一些参数扩展来提取变量的第一个字符;但是if temp=${1#?}; [ "${1%$temp}" -eq '*' ]; then
...
内置了glob模式匹配,所以它的可读性更高。
答案 2 :(得分:0)
如果您希望匹配if
语句中的模式或正则表达式sh
或fish
,则可以使用
if echo "$1" | grep -q ^/; then echo yes; else echo "$1"; fi