我有一系列动物:
declare -A animals=()
animals+=([horse])
Run Code Online (Sandbox Code Playgroud)
我想检查动物是否存在:
if [ -z "$animals[horse]"]; then
echo "horse exists";
fi
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
更新
得到它了!看我的解决方案(第五条评论)
这是我的问题:
我创建了一个名为"jail"的小二进制文件,在/ etc/password中我将它作为测试用户的默认shell.
这是 - 简化 - 源代码:
#define HOME "/home/user"
#define SHELL "/bin/bash"
...
if(chdir(HOME) || chroot(HOME)) return -1;
...
char *shellargv[] = { SHELL, "-login", "-rcfile", "/bin/myscript", 0 };
execvp(SHELL, shellargv);
Run Code Online (Sandbox Code Playgroud)
好吧,无论我怎么努力,似乎当我的测试用户登录时,/ bin/myscript将永远不会被采购.同样,如果我将.bashrc
文件放在用户的主目录中,它也会被忽略.
为什么要抨击这些家伙呢?
-
一些精确,但不一定相关,但要澄清评论中提出的一些观点:
如何在Bash中询问是/否类型问题?
我问这个问题...... echo "Do you like pie?"
并得到答案...... read pie
如果答案是yes
或开始,我该怎么办?y
(是的,是的,等等,也会起作用).
我希望将我的按钮对齐到容器的底座,所以我使用:
.buttons{
position: absolute;
bottom: 0;
}
Run Code Online (Sandbox Code Playgroud)
当没有太多内容(小提琴中的粉色div)时,这很好,但是当有很多内容(小提琴中的橙色div)时,容器会滚动并且按钮不在容器的底部.
如果按钮位于容器的底部,当它没有大量内容时,如果内容很多,它们位于滚动的底部(内容下方),我怎么能拥有它呢?
我必须在按下鼠标时才实现鼠标移动事件.
我只需要在鼠标移动和鼠标移动时执行"OK Moved".
我用过这段代码
$(".floor").mousedown(function() {
$(".floor").bind('mouseover',function(){
alert("OK Moved!");
});
})
.mouseup(function() {
$(".floor").unbind('mouseover');
});
Run Code Online (Sandbox Code Playgroud) 我正在寻找在我的简单c ++应用程序中使用pcre2,(我正在使用vs2015).(我正在看各种正则表达式库,一般的感觉是pcre/pcre2是最灵活的)
首先我从官方位置下载了pcre2,(http://sourceforge.net/projects/pcre/files/pcre2/10.20/)并创建了一个非常简单的例子.
#define PCRE2_CODE_UNIT_WIDTH 8
#include <pcre2.h>
...
PCRE2_SPTR subject = (PCRE2_SPTR)std::string("this is it").c_str();
PCRE2_SPTR pattern = (PCRE2_SPTR)std::string("([a-z]+)|\\s").c_str();
...
int errorcode;
PCRE2_SIZE erroroffset;
pcre2_code *re = pcre2_compile(pattern, PCRE2_ZERO_TERMINATED,
PCRE2_ANCHORED | PCRE2_UTF, &errorcode,
&erroroffset, NULL);
...
Run Code Online (Sandbox Code Playgroud)
首先文件" pcre2.h "不存在,所以我将pcre2.h.generic重命名为pcre2.h
但后来我得到了未解析的外部链接器错误.
我猜我需要从源到项目包含一个或多个文件.但我不愿意随意添加文件而不知道它们的作用.
有人可以给出一些简单的步骤来使用pcre2成功构建项目吗?
更新
这不是一个导入库问题,pcre2.h没有librar(我不能在他们的发布位置看到).
在我的笔尖中,我有一个UITextView
组件.
在我的代码中我有一个UITextView
字段,我使用Interface Builder来确保两者是连接的(至少我认为我是通过从"文件所有者"拖动并将其放在UITextView
Interface Builder中并选择我的成员变量来实现的) .
现在,当我更新文本时setText
,UITextView仍然是空白的.
谢谢DeShawn
我有几个文件夹,不同的图像共享文件名,文件夹结构如下:
/parent/folder001/img001.jpg
/parent/folder001/img002.jpg
/parent/folder002/img001.jpg
/parent/folder002/img002.jpg
/parent/folder003/img001.jpg
/parent/folder003/img002.jpg
...
Run Code Online (Sandbox Code Playgroud)
并希望将这些文件复制/重命名为新文件夹,如下所示:
/newfolder/folder001_img001.jpg
/newfolder/folder001_img002.jpg
/newfolder/folder002_img001.jpg
/newfolder/folder002_img002.jpg
/newfolder/folder003_img001.jpg
/newfolder/folder003_img002.jpg
...
Run Code Online (Sandbox Code Playgroud)
(如果newfolder不是父文件夹的子文件夹,那可能会更好,因为这可能最终导致非常奇怪的递归.)
包含图像的文件夹都不包含任何子文件夹.
理想情况下,我希望能够重用该脚本来"更新"新文件夹,因为我可能需要在以后添加更多包含文件夹的图像.
如何使用shell脚本完成此操作?
我尝试做脚本:
#!/bin/bash
IP='192.168.1.1'
fping -c1 -t300 $IP 2>/dev/null 1>/dev/null
if [ "$?" = 0 ]
then
echo "Host found"
else
echo "Host not found"
fi
Run Code Online (Sandbox Code Playgroud)
我把它转过来:
pi@raspberrypi ~ $ sh /home/pi/sh/test.sh
/home/pi/sh/test.sh: 9: /home/pi/sh/test.sh: Syntax error: "fi" unexpected (expecting "then")
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
我有这个脚本命名wsjs.sh
:
#!/bin/bash
WS=/home/user/wsjs
cd $WS
nohup atom . &
gnome-terminal
grunt watch
Run Code Online (Sandbox Code Playgroud)
如果我在bash中运行它:
./wsjs.sh
Run Code Online (Sandbox Code Playgroud)
然后原子编辑器,gnome-terminal分别启动,当前的bash显示:
user@ubuntu:~$ ./wsjs.pwd
nohup: appending output to ‘nohup.out’
Running "watch" task
Waiting...
Run Code Online (Sandbox Code Playgroud)
现在,如果我按ctrl + c
,grunt watch
退出,BUT原子编辑器也关闭.
......这很奇怪.
我在bash中手动输入了每个命令,并且原子未关闭.我用gedit替换了atom并运行脚本,它没有关闭.
为什么原子关闭了?谢谢!
bash ×5
shell ×3
command-line ×2
linux ×2
sh ×2
unix ×2
atom-editor ×1
batch-rename ×1
c++ ×1
c++11 ×1
chroot ×1
css ×1
css3 ×1
html ×1
ios ×1
ios4 ×1
javascript ×1
jquery ×1
mousedown ×1
mouseevent ×1
mousemove ×1
pcre ×1
rename ×1
scripting ×1
uitextview ×1
visual-c++ ×1