标签: ksh

shell脚本中每个输入字符串大写

我接受一些字符串作为我的脚本的用户输入,例如 -

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”

shell ksh

0
推荐指数
1
解决办法
4810
查看次数

奇怪的外壳行为

好的。我正在尝试获取一些随机数据并将其翻倍几次。所以我:

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 ksh zsh pipe hyphen

0
推荐指数
1
解决办法
49
查看次数

在 while 循环体内使用 sqlcmd 时无限循环

我有一个 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 …

bash ksh sqlcmd

0
推荐指数
1
解决办法
214
查看次数

awk语句的解释

我无法理解这句话:

awk '/^\/\*/ {f=1} {print f?"":$0} /\*\/$/ {f=0}'
Run Code Online (Sandbox Code Playgroud)

unix shell awk ksh

-3
推荐指数
1
解决办法
82
查看次数

标签 统计

ksh ×4

bash ×2

shell ×2

awk ×1

hyphen ×1

pipe ×1

sqlcmd ×1

unix ×1

zsh ×1