Executing Shell Commands
1
(data) => {
const script = `#!/bin/bash
set -e
echo "Hello from lam.shell"
ls -la /data/
`;
return {
"lam.shell": {
"script": script,
"timeout": 300
}
};
}2
(data) => {
const fileNames = data.input.files || [];
const script = `#!/bin/bash
set -e
echo "Processing ${fileNames.length} zip files..."
# List available files
ls -al /data/input/
# Process each zip file
for file in /data/input/*.zip; do
if [ -f "$file" ]; then
filename=$(basename "$file" .zip)
echo "Extracting $filename..."
# Create extraction directory
mkdir -p "/data/output/$filename"
# Extract zip file
unzip "$file" -d "/data/output/$filename"
# List extracted contents
echo "Contents of $filename:"
ls -la "/data/output/$filename"
fi
done
echo "File processing completed"
`;
return {
"lam.shell": {
"script": script,
"binaryDataIds": data.step_6.response, // Pass binary data IDs
"environment": {
"SFDX_DISABLE_AUTOUPDATE": "true",
"SFDX_USE_GENERIC_UNIX_KEYCHAIN": "true"
},
"timeout": 600
}
};
}3
(data) => {
const script = `#!/bin/bash
set -e
# Use configuration values
API_URL="{{config.apiUrl}}"
API_KEY="{{config.apiKey}}"
BATCH_SIZE="{{config.batchSize}}"
echo "Starting data processing with batch size: $BATCH_SIZE"
# Validate configuration
if [ -z "$API_URL" ]; then
echo "Error: API URL not configured"
exit 1
fi
# Process data in batches
TOTAL_RECORDS=$(wc -l < /data/input/data.csv)
BATCHES=$(( (TOTAL_RECORDS + BATCH_SIZE - 1) / BATCH_SIZE ))
echo "Processing $TOTAL_RECORDS records in $BATCHES batches"
for ((i=1; i<=BATCHES; i++)); do
START_LINE=$(( (i-1) * BATCH_SIZE + 1 ))
END_LINE=$(( i * BATCH_SIZE ))
echo "Processing batch $i (lines $START_LINE-$END_LINE)"
# Extract batch
sed -n "${START_LINE},${END_LINE}p" /data/input/data.csv > /tmp/batch_$i.csv
# Send batch to API
curl -X POST "$API_URL/batch" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: text/csv" \
--data-binary @/tmp/batch_$i.csv \
-o /data/output/batch_${i}_response.json
# Clean up temp file
rm /tmp/batch_$i.csv
done
echo "Batch processing completed"
`;
return {
"lam.shell": {
"script": script,
"environment": {
"CURL_CA_BUNDLE": "/etc/ssl/certs/ca-certificates.crt"
},
"timeout": 1800
}
};
}Last updated
Was this helpful?