posix - 在 POSIX sh 中,字符串替换是未定义的。在尝试做 PASS2="${PASS//[${special_chars}]/}"
问题描述
我的代码是
special_chars='[=!=][=@=][=#=][=$=][=%=][=&=]'
PASS="e@0cc3auZeeSio&G"
PASS2="${PASS//[${special_chars}]/}"
我希望 PASS2 包含 PASS 中的所有字符 - 特殊字符。这工作正常,但有外壳检查错误。
PASS2="${PASS//[${special_chars}]/}"
^-- SC2039: In POSIX sh, string replacement is undefined.
我试着做
PASS2=$(printf '%s' "$PASS2" | PASS//["${special_chars}"]/)
和
PASS2=$(printf '%s' "$PASS" | PASS//["${special_chars}"]/)
这些在功能上不起作用。
解决方案
此脚本通过 shellcheck:
#!/bin/sh
special='!@#$%&'
PASS="e@0cc3auZeeSio&G"
PASS2=$(printf %s "$PASS" | tr -d "$special")
echo "$PASS2"
推荐阅读
- postgresql - PG中如何获取物化视图的创建进度
- c++ - C++ 在全局范围内对变量使用静态是否只会将其更改为文件范围?
- node.js - 需要一种方法来增加/减少 Firebase 存储中目录中文件的计数器
- amazon-web-services - 企业级 CI/CD 管道的范围
- c++ - 用递归函数求解布尔方程
- c# - SharePoint 2019 基于自定义表单的身份验证使用活动目录“未与您共享的网站”
- python - 在 Windows 上的 Python Popen 子进程中暂停 FFmpeg 编码
- c - 具有 0 个子子树的级别顺序二叉树插入
- python - Diestel-Leader 图的绘图球
- python - 通过迭代行的函数运行 df