我有一个Vim脚本调用外部shell脚本并将输出读入当前缓冲区.它在Unix系统中运行良好.我正在尝试使脚本与操作系统无关,所以我希望它也适用于Windows用户.这是脚本中的相关行:
:exe ":0r !$HOME/bin/shell_script"
Run Code Online (Sandbox Code Playgroud)
根据Vim的文档,$HOME对Windows用户来说也应该很好.在命令模式下在Win XP上使用gvim,做
:echo $HOME
Run Code Online (Sandbox Code Playgroud)
确实产生了"C:\ Documents and Settings\my_user".
但是,我的Vim脚本(针对反斜杠调整)在Windows机器上失败,并在DOS cmd.exe窗口中显示消息
$ HOME\bin\shell_script"找不到.
换句话说,$HOME在将其传递给cmd.exe之前,Vim似乎没有扩展其值.
我也不能使用%APPDATA%,因为Vim解释%为当前文件并预先/附加文件名APPDATA.很奇怪,Vim 确实扩展%但不扩展$HOME.
如何$HOME正确扩展?是因为我exe在vim脚本中使用了吗?
在我的一次采访中,面试官问我为什么大写字母在ASCII表格中的小写字母之前,我在google.com上搜索但没有找到任何内容,有人能给我答案吗?多谢!
我只是想知道是否有办法替换文件夹中每个文件中的每个下划线(比如.java文件)并将下一个字符转换为大写,如
getEmployee_Name → getEmployeeName us_employee_name → usEmployeeName如果我们有什么id,我们希望利用两I和D,如
us_employee_id→ usEmployeeID?自从我还在学习以来,我还没有尝试过任何东西.我可以做类似的事情s/_/\U\1/g,sed还是可以使用某些脚本来执行此操作?
无论我的进程是启动还是停止,是否有任何理由为什么此脚本始终返回"正在运行"?
if ps ax | grep -v grep | grep "processName" > /dev/null
then
echo $"running"
else
echo $"not running"
fi
Run Code Online (Sandbox Code Playgroud)
非常感谢你
更新: 我添加了我的脚本的完整示例,也许其他地方有问题.
case "$1" in
start)
# Start daemons.
echo -n $"Starting daemon: "
;;
stop)
# Stop daemons.
echo -n $"Shutting down: "
echo
;;
status)
pgrep -f "ProcessName" > /dev/null
if [ $? -eq 0 ]; then
echo $"ProcessName is running"
else
echo $"ProcessName is not running"
fi
;;
restart)
$0 stop
$0 start
;;
*) …Run Code Online (Sandbox Code Playgroud) 我有一个sh/bash脚本需要调用带参数的批处理文件(参数是文件名,并以DOS/Windows格式给出).
基本上我有: script.sh
#!/bin/sh
declare var1=$1
declare var2=$2
dosomething var1 var2
...
<invoke batch script> var1 var2
...
dosomethingelse
Run Code Online (Sandbox Code Playgroud)
我正在使用GNU bash, version 3.1.0(3)-release (i686-pc-msys)shell作为shellmsysgit
问题是,当我从脚本运行时:
$COMSPEC /c batchfile param1 param2
要么我得到一个看似bash的"空提示",但是控制台上没有显示命令结果,要么cmd.exe启动,要么不执行脚本.
我试过引用这些参数来像这样猛击:
$COMSPEC /c \"batchfile param1 param2\"
$COMSPEC /c \"\"batchfile param1 param2\"\"
$COMSPEC /c \"\"batchfile \"param1\" \"param2\"\"\"
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何结果.
我正在尝试如何为Notepad ++添加自定义片段到Zen Coding(ZC)插件.我找到了ZC存储其片段的文件
C:\Program Files\Notepad++\plugins\NppScripting\includes\Zen Coding.js
但我有一些问题:
z-index:|;并且有时<z></z>.ZC如何识别背景?我不能为我的生活找到适当的正则表达式.
我正在寻找的是匹配Linux文件权限的有效数字表示的正则表达式(例如,740表示全部读取,777表示全部全部).到目前为止,我已经尝试了以下内容:
strtotest=740
echo "$strtotest" | grep -q "[(0|1|2|3|4|5|7){3}]"
if [ $? -eq 0 ]; then
echo "found it"
fi
Run Code Online (Sandbox Code Playgroud)
与上面的问题是,正则表达式匹配任何事1-5或7在里面,不管在任何其它字符.例如,如果strtotest要更改为709,则条件为真.我也试过了[0|1|2|3|4|5|7{3}],[(0|1|2|3|4|5|7{3})]但那些效果不好.
我正在使用正则表达式错误,还是我错过了必须处理的内容grep?
我试图理解这段代码:
. functions.sh || { : ; echo "Error while loading the specified file" >&2; exit 2; }
Run Code Online (Sandbox Code Playgroud)
我知道当指定的文件不可用时,会调用括号中的代码.但这: ;意味着什么?此外,当您删除它时,脚本不起作用.
本质上,我想获取一个数组并创建一个单独的字符串,所述数组的元素由换行符分隔.
我有一个名为的数组$zones.输出引用以$zones确认它是一个数组.
以下代码:
print_log(Dumper($zones));
print_log('-------');
print_log(Dumper(join("\n",$zones)));
Run Code Online (Sandbox Code Playgroud)
得到以下输出
[2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = [
'fake.com25',
'fake.com2',
'fake.com27',
'fake.com43',
'fake.com41',
'fake.com40',
'fake.com39',
'fake.com37',
'fake.com36',
'fake.com35',
'fake.com31',
'fake.com56',
'fake.com55',
'fake.com54',
'fake.com53',
'fake.com52',
'fake.com51',
'fake.com50',
'fake.com49',
'fake.com48',
'fake.com42',
'fake.com38',
'fake.com34',
'fake.com33',
'fake.com32',
'fake.com30',
'fake.com29',
'fake.com28',
'fake.com26',
'fake.com24',
'fake.com23',
'fake.com69',
'fake.com68',
'fake.com67',
'fake.com66',
'0',
'fake.com44',
'fake.com45',
'fake.com46',
'fake.com278'
];
[2013-06-15 16:23:29 -0500] info [dnsadmin] -------
[2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = 'ARRAY(0x170cf0d8)';
Run Code Online (Sandbox Code Playgroud)
我真的不想手动循环这个数组.有人可以解释为什么join()函数返回类型的名称和十六进制数字?
我刚刚下载了Powershell 2.0,我正在使用ISE.总的来说我真的很喜欢它,但我正在寻找一个解决方法.有很多遗留命令是交互式的.例如xcopy,如果告知用户覆盖文件,则会默认提示用户.
在Powershell ISE中,这似乎悬而未决
mkdir c:\tmp
cd c:\tmp
dir > tmp.txt
mkdir sub
xcopy .\tmp.txt sub # fine
xcopy .\tmp.txt sub # "hang" while it waits for a user response.
Run Code Online (Sandbox Code Playgroud)
第二个xcopy是提示用户允许覆盖C:\ tmp\sub\tmp.txt,但提示不会显示在ISE输出窗口中.我可以从cmd.exe运行这个很好但是ISE有什么用?我怎么知道什么时候需要哪一个?