您好,我正在尝试在 opensuse 中创建一个 Shell 脚本来创建 MySqlUsers,但是当我尝试运行它时,出现此错误:
警告:无法使用参数“/home/thomas/Scripts/MySqlCreateUser.sh”启动程序“/home/thomas/Scripts/MySqlCreateUser.sh”。
警告:Exec 格式错误
知道我能做什么吗?
我想按以下方式打印文本
Waiting for completion.
Waiting for completion..
Waiting for completion...
Run Code Online (Sandbox Code Playgroud)
[注:不超过三个点]
上面应该在同一行并且在一个循环中。
当循环条件为假时,我也想在同一行中得到以下内容:
Waiting for completion... [OK]
Run Code Online (Sandbox Code Playgroud)
我如何在 bash 脚本中实现这一目标?
我刚刚遇到了这个代码片段:
$ DEVELOPMENT=1 node dev-mode.js
Run Code Online (Sandbox Code Playgroud)
这一行运行 node.js 程序并设置环境变量DEVELOPMENT。我不明白设置 env 变量的机制是什么?这是有效的语法:
$ [var1=value1 var2=value2] [process_name process_params] ?
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以使用参数来构造字段名称jq.
例:
jq -rc \
--arg secret_name ${secret_name} \
--arg secret_value ${secret_value} \
'.data.$secret_name = "$secret_value"'
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我想使用参数值secret_name来创建一个键.data.这可能用jq吗?
示例数据:
secret_name=abc
secret_value=xyz
Run Code Online (Sandbox Code Playgroud)
jq运行JSON :
{
"apiVersion": "v1",
"data": {},
"kind": "Secret",
"metadata": {
"name": "kv-secrets",
"namespace": "default"
},
"type": "Opaque"
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
{
"apiVersion": "v1",
"data": {
"abc": "xyz"
},
"kind": "Secret",
"metadata": {
"name": "secrets"
},
"type": "Opaque"
}
Run Code Online (Sandbox Code Playgroud)
请记住,我打算运行原始命令来填充.data更多的键值对.
我有一个file.txt,我试图总结第四和第五列的值:
^20170821^3007030^153^863.53^0.42^
^20170821^1402675^110^581.36^0.37^
^20170821^1404785^24^155.29^0.29^
^20170821^1406505^40^210.51^0.00^
^20170821^1005^1^18.00^0.00^
^20170821^9657^7^7.28^0.00^
^20170821^143646^86^486.59^0.08^
^20170821^342657^3^12.60^0.00^
^20170821^1006^4^7.04^0.04^
^20170821^1004^1215^3502.44^12.09^
^20170821^1007^932^6689.64^15.07^
^20170821^378228^1^2.80^0.00^
^20170821^704797^4^23.80^0.00^
^20170821^705642^2^9.80^0.00^
^20170821^703689^7^40.60^0.00^
^20170821^148340^75^382.81^0.20^
^20170821^257^2^5.60^0.00^
^20170821^3702^1^2.80^0.00^
^20170821^3703^1^7.00^0.00^
^20170821^258^1^7.00^0.00^
^20170821^920299^11^60.20^0.00^
^20170821^210705^2^14.00^0.00^
^20170821^867693^12^65.88^0.08^
^20170821^2635085^6^33.60^0.00^
^20170821^13211^140^409.18^0.58^
^20170821^64^2^14.00^0.00^
^20170821^13214^234^1685.91^1.26^
^20170821^13212^2^34.90^0.00^
^20170821^13213^2^2.80^0.00^
^20170821^18385^8^7.28^0.00^
$awk -F '^' '{sum += $5} END {print sum}' file.txt
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:15344.2
$awk -F '^' '{sum += $6} END {print sum}' file.txt
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:30.48
然后我在Excel中检查了结果.事实证明,awk的添加在第一次添加时是错误的.缺少0.04.
如何正确地对列进行求和?
如何在包含LF字符的Bash CLI中传递参数?就像是:myprog foo\nbar
我试过这个:
myprog `printf 'foo\nbar'`
myprog foo\nbar
Run Code Online (Sandbox Code Playgroud)
我使用这个bash程序来测试结果:
#myprog
echo $*
Run Code Online (Sandbox Code Playgroud)
和node.js程序
#!/usr/bin/env node
console.log(process.argv[2])
Run Code Online (Sandbox Code Playgroud)
这是行不通的.
我将一些日期参数放入脚本中
#!/bin/bash
set -x
today=$(date +%Y%m%d)
while [ ! $# -eq 0 ] #while number of arguments is NOT zero, do this
do
if [[ "$1" = "--test" ]] || [[ "$1" = "-t" ]] ; then
today=$(date +%Y%m%d).test
elif [[ "$1" = "--yesterday" ]] || [[ "$1" = "-y" ]] ; then
DOW=$(date +%u)
if [[ "$DOW" = "1" ]] ; then
today=$(date --date="3 days ago" +%Y%m%d)
else
today=$(date -d "yesterday 13:00" +%Y%m%d)
fi
fi
done
echo "$today"
exit …Run Code Online (Sandbox Code Playgroud) 在下面的 bash 代码中,我得到 null 作为值而不是实际值。我jq 1.5在Linux操作系统中使用。
getProperty(){
export PROP=$1
export value_found=`cat my.json | jq '."env.PROP"'`
echo "$1 = $value_found"
}
getProperty "first.name"
getProperty "last.name"
Run Code Online (Sandbox Code Playgroud)
内容my.json
{"first.name":"Adam", "last.name":"Eve"}
Run Code Online (Sandbox Code Playgroud)
我的程序需要获取随机选择的属性的值,因此在运行之前不知道属性名称(因此尝试使用参数的原因)
sed命令中不区分大小写的替换指示符本身似乎不区分大小写。将i / I附加到sed语句似乎会产生相同的结果。
echo a | gsed ’s_A_Z_i’
Run Code Online (Sandbox Code Playgroud)
返回:Z
echo a | gsed ’s_A_Z_I’
Run Code Online (Sandbox Code Playgroud)
还返回:Z
echo A | gsed ’s_A_z_I’
Run Code Online (Sandbox Code Playgroud)
返回:z
echo A | gsed ’s_a_Z_i’
Run Code Online (Sandbox Code Playgroud)
返回:Z
gsed返回特定于案例的替代文本。
是否存在一种紧凑的方式来指定不区分大小写的搜索,并在与查找匹配的大小写匹配的情况下进行替换?(将a替换为z,将A替换为Z)
当然,可以通过两个命令解决问题,但我正在寻找更紧凑的东西。
其次,i / I后缀的效果是否有所不同?(不是-i标志)
这与[上一个问题](如何在Mac OS X上使用GNU sed)不同,但与之不同!在标准自制软件安装后,在OSX中使用gnu-sed的问题。
我没有特定的应用程序。我正在学习OSX上gnu-sed的一些复杂之处,并且想知道它如何处理大小写。
我需要从文本文件中获取表格格式输出,我正在通过以下 awk 命令实现它。
分隔文件
ACTIVE#1238917238971238#USA#The U.S. is a country of 50 states covering a vast swath of North America.
ACTIVE#21389721839781237812#INDIA#India, officially the Republic of India, is a country in South Asia.
ACTIVE#3121278372183782137812#AUSTRALIA#Australia, officially the Commonwealth of Australia, is a sovereign country comprising the mainland of the Australian continent
Run Code Online (Sandbox Code Playgroud)
AWK 命令
awk -F"#" 'BEGIN {{printf "%-80s\n","--------------------------------------------------------------------------------------------------------------------------------------"} {printf "|%-12s|%-30s|%-38s|%-50s|\n","STATUS","ID", "Country", "Description"} {printf "%-80s\n","--------------------------------------------------------------------------------------------------------------------------------------"}} {printf "|%-12s|%-30s|%-38s|%-50s|\n",$1,$2,$3,$4} END{printf "%-80s\n","--------------------------------------------------------------------------------------------------------------------------------------"}' /tmp/test.txt
Run Code Online (Sandbox Code Playgroud)
如果您可以看到 Description 列的输出,则它不会在其自己的列中格式化输出,而是由于字符串长度而弄乱了整个表。
有人可以查看并建议我如何更好地显示说明列的输出吗?