我是UNIX和shell编程的新手。我正在尝试使用chmod
命令使命令行文本文件可执行。
以下是代码:
$ls
a aa aba chapt1 chapt2 chapt3 newprog
$filename=ch
$cat newprog
echo a?* n* ${filename}*
$chmod +x newprog
$ls -l newprog
-rwxr-xr-x 1 xxxxx xxxxx 25 Apr 12 09:50 newprog
但是当我通过
执行newprog时newprog
我得到了
newprog: command not found
我使用vi命令创建newprog并使用putty。 哪个部分我做错了?
感谢Benjamin W.通过使用./newprog,该文件是可执行的。
但结果是
aa aba newprog a aa aba chapt1 chapt2 chapt3 newprog
我认为我期望的结果是
aa aba newprog chapt1 chapt2 chapt3
为什么会出现重复?
答案 0 :(得分:2)
出于安全原因,UNIX不直接在当前目录中执行文件,而只是从PATH中找到的目录执行。这是为了避免攻击,其中某人将与常用命令同名的恶意可执行文件放入可写目录,并希望有人以他的权利执行它。出于同样的原因,您也不应将var str = 'hello Hello';
var count = {};
str.split('').forEach(function(v) {
if (v === ' ') return;
v = v.toLowerCase();
count[v] = count[v] ? count[v] + 1 : 1;
})
console.log(count);
放入PATH。
如果您确定要执行此类文件,请使用.
。
回答扩展问题:由于未导出文件名,脚本看到的值为空。因此,最后一个模式./filename
匹配所有文件(不以点开头)。
要获得预期的结果,请*
(这告诉shell将文件名变量放入给予子进程的环境中)并再次运行脚本。