我有的是这个:
progname=${0%.*}
progname=${progname##*/}
Run Code Online (Sandbox Code Playgroud)
这可以嵌套(或不嵌套)成一行,即单个表达式吗?
我正在尝试从脚本名称中删除路径和扩展名,以便只保留基本名称.以上两行都运行正常.我的"C"性质只是让我更加混淆这些.
我找到了这个.
我正在尝试这个:
x='some
thing'
y=(${x//\n/})
Run Code Online (Sandbox Code Playgroud)
我没有运气,我认为它可以使用双反斜杠:
y=(${x//\\n/})
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
为了测试我没有得到我想要的东西:
echo ${y[1]}
Run Code Online (Sandbox Code Playgroud)
获得:
some
thing
Run Code Online (Sandbox Code Playgroud)
我想成为:
some
Run Code Online (Sandbox Code Playgroud)
我想y成为一个阵列[some, thing].我怎样才能做到这一点?
TL; DR; 什么是shell脚本?它是一种编程语言/我们在shell脚本中使用的编程语言是什么?
免责声明:有点offtopic
所以bash代表Bourne-again shell.(Unix)Shell是一个命令行用户界面,或者可以称之为解释器(?)
所以我正在填写一份新工作的应用程序,你会被要求获得不同编程语言的经验,然后在底层有其他经验 - 我开始输入python 2.7,powershell,bas ...等等!bash不是一种编程语言 - 它是一个可以执行shell脚本的控制台...所以......呃......天哪,我不知道!
我们可以使用shell变量AWK像$VAR代替$1,$2?例如:
UL=(AKHIL:AKHIL_NEW,SWATHI:SWATHI_NEW)
NUSR=`echo ${UL[*]}|awk -F, '{print NF}'`
echo $NUSR
echo ${UL[*]}|awk -F, '{print $NUSR}'
Run Code Online (Sandbox Code Playgroud)
实际上我是一个oracle DBA,我们得到了很多导入请求.我正在尝试使用脚本自动化它.该脚本将查找转储中的用户并提示需要加载转储的用户.
假设转储有两个用户AKHIL,SWATHI(有可在转储可能的用户,我希望进口更多的用户数).我想将转储导入新用户AKHIL_NEW和SWATHI_NEW.所以要阅读的输入有些想法AKHIL:AKHIL_NEW,SWATHI:SWATHI_NEW.
首先,我需要找到要创建的用户数,然后我需要AKHIL_NEW,SWATHI_NEW从我们给出的输入中获得新用户.这样我就可以连接到数据库并创建新用户然后导入.我没有复制整个代码:我只是从接受输入用户的地方复制了代码.
UL=(AKHIL:AKHIL_NEW,SWATHI:SWATHI_NEW) ## it can be many users like USER1:USER1_NEW,USER2_USER2_NEW,USER3:USER_NEW..
NUSR=`echo ${UL[*]}|awk -F, '{print NF}'` #finding number of fields or users
y=1
while [ $y -le $NUSR ] ; do
USER=`echo ${UL[*]}|awk -F, -v NUSR=$y '{print $NUSR}' |awk -F: '{print $2}'` #getting Users to created …Run Code Online (Sandbox Code Playgroud) 我想一个文本用逗号分开,没有空间 in for foo in list.假设我有一个CSV_File包含以下文本的CSV文件:
Hello,World,Questions,Answers,bash shell,script
...
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码将它分成几个单词:
for word in $(cat CSV_File | sed -n 1'p' | tr ',' '\n')
do echo $word
done
Run Code Online (Sandbox Code Playgroud)
它打印:
Hello
World
Questions
Answers
bash
shell
script
Run Code Online (Sandbox Code Playgroud)
但我希望它用逗号分隔文本而不是空格:
Hello
World
Questions
Answers
bash shell
script
Run Code Online (Sandbox Code Playgroud)
我怎样才能在bash中实现这一目标?
如果我有一个字符串变量谁的值是"john is 17 years old"如何使用空格作为分隔符来标记它?我会用awk吗?
可能重复:
基于Bash中的分隔符拆分字符串?
在bash脚本中,如何使用分隔符拆分字符串;并在结果数组中循环?
我正在尝试编写一个bash脚本,该脚本会增加给出的版本号
{major}.{minor}.{revision}
Run Code Online (Sandbox Code Playgroud)
例如.
1.2.13
Run Code Online (Sandbox Code Playgroud)
是否有一种很好的方法可以使用像sed或awk这样的东西轻松提取这3个数字,这样我就可以增加{revision}数字并输出完整的版本号字符串.
我有一个生成如下的字符串:
192.168.1.1,UPDOWN,Line protocol on Interface GigabitEthernet1/0/13, changed state to up
Run Code Online (Sandbox Code Playgroud)
如何取出该字符串并从中生成2个变量(使用bash)?
比如我想要的
$ip=192.168.1.1
$int=GigabitEthernet1/0/13
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序(服务器)侦听端口8080.我希望能够将端口80转发给它,以便命中http://localhost解析我的应用程序(在localhost:8080).
这应该针对任何端口映射进行推广(例如80:8080=> P_src:P_target),并使用现代*nix机器(例如Ubuntu)的最佳实践.
注意这都是在本地完成的,因此除了localhost之外,不需要接受来自任何人的连接.