如果我可以在我的 bash shell 中做到这一点:
$ STRING="A String"
$ echo ${STRING^^}
A STRING
Run Code Online (Sandbox Code Playgroud)
如何将命令行参数更改为大写?
我试过:
GUARD=${1^^}
Run Code Online (Sandbox Code Playgroud)
该行产生该行的错误替换错误。
让我们从这个测试脚本开始:
$ cat script.sh
GUARD=${1^^}
echo $GUARD
Run Code Online (Sandbox Code Playgroud)
这有效:
$ bash script.sh abc
ABC
Run Code Online (Sandbox Code Playgroud)
这不起作用:
$ sh script.sh abc
script.sh: 1: script.sh: Bad substitution
Run Code Online (Sandbox Code Playgroud)
这是因为,在我的系统,最喜欢的debian-like系统,默认的shell,/bin/sh
是不是bash的。要获得 bash 功能,需要显式调用 bash。
类似 debian 的系统上的默认 shell 是dash
. 选择它不是因为功能,而是因为速度。它不支持^^
. 要查看它支持什么,请阅读man dash
.
使用tr
命令:
脚本:
#!/bin/bash
echo $@ | tr '[a-z]' '[A-Z]'
Run Code Online (Sandbox Code Playgroud)
查看:
$ bash myscript.sh abc 123 abc
ABC 123 ABC
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12867 次 |
最近记录: |