| G-Cows: Scripting Language for Web Content Management | ||
|---|---|---|
| Prev | Chapter 23 Executing external commands, scripts and programs | Next |
evalexec (prog_file_name); evalexec (prog_file_name, arguments);
Execute prog_file_name and return its standard output as
a string variable; prog_file_name is the name of the file
storing the script or the executable and can be any valid expression:
evalexec ("literal_file_name")
evalexec (variable_storing_file_name)
evalexec (variable_storing_name + variable_storing_extension)
The evalexec () function behaves exactly as the exec () one, the only difference is that output from script is
returned as a variable and not included in Cows' output. Since there are many caveats
related to these functions, read carefully the section Section
23.3: everything apply to evalexec () too (command line
arguments, trailing ./ for script name, dependencies etc.).
Create a file called imgs.sh with the following content (it's a simple shell script which display the number of jpeg images stored in a directory called images/ placed right under the site root):
#!/bin/sh dir_img=$LA"images/*.jpg" ls -l $dir_img | wc -l
Now, you have to make it executable:
chmod u+x imgs.sh
Now let's create a simple Cows script called evalexec.cws:
<h1>Executing an external Script</h1>
<cows>
n_images = evalexec ("./imgs.sh");
n_images_int = toint (n_images);
print ("There are " + n_images_int + " images.");
/* Suppose you want to display images in rows of 4 images:
the number of rows will be: */
n_rows = n_images_int / 4;
if ((n_images_int % 4) != 0)
n_rows ++;
print (n_rows + " rows needed");
</cows>
On my machine (I have 22 jpeg images in directory images/):
$ cows evalexec.cws evalexec.html $ cat evalexec.html <h1>Executing an external Script</h1> There are 22 images. 6 rows needed
This manual can be downloaded from http://www.g-cows.org/.