Shell-Script

在 shell 腳本中列印複選標記/十字標記

  • January 1, 2022

我想在 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

引用自:https://unix.stackexchange.com/questions/343934