我接受一些字符串作为我的脚本的用户输入,例如 -
read -p "User's full name : " FULLNAME
read -p "User's Manager's name : " MGRNAME
.
.
Run Code Online (Sandbox Code Playgroud)
我希望所有输入字符串都大写,即输入字符串中的每个单词都大写。
我写了一个简单的函数,例如 -
capitalize()
{
$1=`echo ${$1}|sed -e "s/\b\(.\)/\u\1/g"`
}
Run Code Online (Sandbox Code Playgroud)
并将这个函数称为 -
capitalize FULLNAME
Run Code Online (Sandbox Code Playgroud)
它给出了以下错误 -
line 77: ${$1}: bad substitution
Run Code Online (Sandbox Code Playgroud)
还尝试过间接扩展 -
capitalize()
{
$1=`echo ${!1^}`
}
Run Code Online (Sandbox Code Playgroud)
它抛出以下错误 -
line 77: FULLNAME=Kamlesh: command not found
Run Code Online (Sandbox Code Playgroud)
请帮助提供正确的语法或任何其他方式来实现此目的。
示例输出 - 我正在读取 FULLNAME 变量中的输入。当我调用 Capitalize() 时,它应该更新 FULLNAME 变量本身内的值。
例如,如果用户输入是 - “kamlesh gallani”
如果我现在调用大写 FULLNAME,那么 FULLNAME 应该包含“Kamlesh Gallani”
好的。我正在尝试获取一些随机数据并将其翻倍几次。所以我:
sridhar@ip-10-118-18-248:/scratch$ for each in 1 2 3 4 5 6 7 8 9 10 ; do pv randomtext | cat >> randomtext ; cp randomtext "randomtext-${each}" ; ls -l randomtext* ; done
3.45KiB 0:00:00 [99.2MiB/s] [================================>] 100%
-rw-rw-r-- 1 sridhar sridhar 7070 Aug 6 22:09 randomtext
-rw-rw-r-- 1 sridhar sridhar 7070 Aug 6 22:09 randomtext-1
6.90KiB 0:00:00 [ 269MiB/s] [================================>] 100%
-rw-rw-r-- 1 sridhar sridhar 14140 Aug 6 22:09 randomtext
-rw-rw-r-- 1 sridhar sridhar 7070 Aug 6 22:09 randomtext-1 …Run Code Online (Sandbox Code Playgroud) 我有一个 bash 脚本,用于在while 循环sqlcmd体中从数据库获取数据:
#!/bin/bash
tmpfile=$(mktemp)
echo -e "1\n2" > tmpfile
echo "---------------content from the tmp file--------------"
cat tmpfile
echo "------------------------------------------------------"
while read -r line || [[ -n $line ]]
do
echo "${line}"
echo " ------------sqlcmd operation start------------"
sqlcmd -Q "set nocount on;select 'dummy'"
echo -e " ------------sqlcmd operation done------------\n\n"
done < tmpfile
echo "-----------------------script done---------------------"
Run Code Online (Sandbox Code Playgroud)
预计会根据 file.txt 中的内容行进行交互,在本例中是两次,但实际上它将无限地交互第一行:

我得到了关于如何从这里解决无限循环的答案,当使用 sqlcmd 时循环变量被固定为常量
此处Unexpected behavior of file描 述符和/或 I/O 流在 ksh 中使用 -i 选项(从文件读取 sql)运行 sqlcmd …
我无法理解这句话:
awk '/^\/\*/ {f=1} {print f?"":$0} /\*\/$/ {f=0}'
Run Code Online (Sandbox Code Playgroud)