zsh 删除不可见字符

问题描述 投票:0回答:2

我有一个相对简单的脚本,但一直失败。现在我发现有两个**爬了进来。我怎样才能把它们去掉呢?

#!/bin/zsh

checkupdate='macOS Ventura'
macos='macOS Ventura'

echo -n $checkupdate | wc -m
echo -n $macos | wc -m

echo "$checkupdate" | tr -dc '[:print:]' | od -c
echo "***************"
echo "$macos" | tr -dc '[:print:]' | od -c

if [[ $checkupdate == $macos ]]; then
  echo "ok"
else
  echo "bad"
  exit 1
fi

结果:

sudo ./test10.sh
      13
      13
0000000    m   a   c   O   S      **   V   e   n   t   u   r   a
0000016
***************
0000000    m   a   c   O   S       V   e   n   t   u   r   a
0000015
bad

“Ventura”这个词之前显然是这两个**

macos variables zsh invisible
2个回答
0
投票

tr -c '\040-\177' ' '
对我有用,即将非ASCII字符(八进制040 - 177,或十进制32-127)翻译为空格:

echo "$checkupdate" | tr -c '\040-\177' ' ' | od -c

0
投票

由于它是脚本,因此您应该在

vi
中看到它们:

vi test10.sh

vi
中,使用
x
将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.