Shell-Script
在 shell 腳本中列印複選標記/十字標記
我想在 shell 腳本中列印一個複選標記和一個十字標記:
#!/bin/bash echo -e "\xE2\x9C\x94 existing" echo -e "\xE2\x9D\x8C missing"
為什麼這不起作用?
正如 OP 在評論中透露的那樣,他們使用
sh file.sh
. 根據符號連結到的預設 shell,/bin/sh
它可能不支持 unicode 字元。例如,在 Ubuntu 上,預設 shell 是
dash
.$ dash $ printf "\xE2\x9C\x94 missing\n" \xE2\x9C\x94 missing $ echo -e "\xE2\x9C\x94" -e \xE2\x9C\x94
在互動式 shell 中呼叫命令時它起作用的原因是預設情況下使用者互動式 shell 是(在 Ubuntu 上)
/bin/bash
要正確執行腳本,您需要:
- 執行它
./file.sh
- 將其作為正確 shell 的參數執行
bash file.sh
或者,可以求助於與外殼無關的方法:
# this printf is standalone program, not shell built-in $ /usr/bin/printf "\xE2\x9C\x94 check mark\n" ✔ check mark $ python -c 'print "\xE2\x9C\x94 check mark"' ✔ check mark $ perl -e 'print "\xE2\x9C\x94 check mark"' ✔ check mark